import { getUserProfileApi, loginApi } from "@/api/user"
import {
  getToken,
  removeToken,
  setToken
} from "@/utils/auth"
// state  是一个函数返回一个对象
const state = () => ({
  token: getToken(),  // 从cookie中读取作为默认值！
  userInfo: {}  // 用户资料  userId mobile username
})
// 同步修改
const mutations = {
  // 设置token
  setToken(state, payload) {
    state.token = payload // 赋给state
    setToken(payload)     // 存储到cookie中
  },
  // 移除token
  removeToken(state) {
    state.token = null
    removeToken()
  },
  // 设置用户资料
  setUserInfo(state, payload) {
    state.userInfo = payload
  },
  // 移除用户资料
  removeUserInfo(state) {
    state.userInfo = {}
  }
}
// 异步修改
const actions = {
  // 登录的操作
  async loginAction(context, payload) {
    console.log("表单数据", payload);
    // 1. 发起网络请求，得到token
    let res = await loginApi(payload)
    // 2. 将token设置给state中
    context.commit('setToken', res)
  },
  // 获取用户资料操作
  async getUserProfileAction(context) {
    // 1.调用获取用户资料的API函数
    let res = await getUserProfileApi()
    // 2.将获取到用户资料存储到state
    context.commit('setUserInfo', res)
  },
  // 退出的action操作
  async logout({ commit }) {
    //  清除用户资料、token
    commit('removeToken')
    commit('removeUserInfo')
  }
}
// 暴露
export default {
  namespaced: true,  // 开启命名空间
  state,
  mutations,
  actions
}

